PRIMITIVES

Section: Miscellaneous Library Functions (3X)
Updated: December , 1990
Index Return to Main Contents
 

NAME

primitives - a collection of object primitives for SIPP.  

SYNOPSIS

#include <primitives.h>

[g]cc [flags] files -lsipp -lm [ libraries ]

 

DESCRIPTION

SIPP gives the user access to a number of rather low level functions to create polygons, surfaces and objects. This manual describes a set of functions that use the low level functions in SIPP to create geometric primitives. Each primitive is a complete SIPP object.

Each object primitive has a last argument that describes what kind of texture coordinates should be assigned to the surface of the object. This texture parameter should be one of: NATURAL, CYLINDRICAL, SPHERICAL or WORD. See the user manual for a detailed description of the meaning of the different values.

 

PRIMITIVES

Object *sipp_torus(bigradius, smallradius, res1, res2, surface, shader, texture)

double  bigradius;
double  smallradius;
int  res1;
int  res2;
void  *surface;
Shader *shader;
int  texture;

sipp_torus() creates a torus centered about the origin and with the z-axis pointing up through the ring. NATURAL texture mapping is a two dimensional mapping with the x coordinate going around the "small" circle and the y coordinate going around the "large" circle.

Object *sipp_cone(bot_rad, ,top_rad, length, resolution, surface,shader, texture)

double  bot_rad;
double  top_rad;
double  length;
int  resolution;
void  *surface;
Shader *shader;
int  texture;

sipp_cone() creates a, possibly truncated, cone centered about the origin and with the z-axis along the cones main axis. NATURAL texture mapping is CYLINDRICAL.

Object *sipp_cylinder(radius, length, resolution, surface, shader, texture)

double  radius;
double  length;
int  resolution;
void  *surface;
Shader *shader;
int  texture;

sipp_cylinder() creates a cylinder centered about the origin and with the z-axis along the cylinders main axis. NATURAL texture mapping is CYLINDRICAL.

Object *sipp_ellipsoid(x_rad, y_rad, z_rad, resolution, surface, shader, texture)

double  x_rad;
double  y_rad;
double  z_rad;
int  resolution;
void  *surface;
Shader *shader;
int  texture;

sipp_ellipsoid() creates a ellipsoid centered about the origin. NATURAL texture mapping is SPHERICAL.

Object *sipp_sphere(radius, resolution, surface, shader, texture)

double  radius;
int  resolution;
void  *surface;
Shader *shader;
int  texture;

sipp_sphere() creates a sphere centered about the origin. NATURAL texture mapping is SPHERICAL.

Object *sipp_prism(num_points, points, length, surface, shader, texture)

int  num_points;
Vector *points;
double  length;
void  *surface;
Shader *shader;
int  texture;

sipp_prism() creates a prism defined by the polygon in points. Only the x and y values are used and the prism will ascend and descend equally far (length / 2.0) from the x-y plane along the z axis. NATURAL texture mapping is similar to CYLINDRICAL but the x coordinate is not taken from projection on a cylinder but is evenly distributed around the perimeter. An odd thing in all the 2D mappings for the prism is that the top face will have texture coordinates (0.0, 1.0) while the bottom will get (0.0, 0.0).

Object *sipp_block(x_size, y_size, z_size, surface, shader, texture)

double  x_size;
double  y_size;
double  z_size;
void  *surface;
Shader *shader;
int  texture;

sipp_block() creates a rectangular block with the size defined by x_size, z_size and z_size. The block is centered about the origin. NATURAL texture mapping is similar to CYLINDRICAL but the x coordinate is not taken from projection on a cylinder but is evenly distributed around the perimeter. An odd thing in all the 2D mappings for the block is that the top face will have texture coordinates (0.0, 1.0) while the bottom will get (0.0, 0.0).

Object *sipp_cube(side, surface, shader, texture)

double  side;
void  *surface;
Shader *shader;
int  texture;

sipp_cube() creates a cube with the side of length side. The cube is centered about the origin. NATURAL texture mapping is similar to CYLINDRICAL but the x coordinate is not taken from projection on a cylinder but is evenly distributed around the perimeter. An odd thing in all the 2D mappings for the cube is that the top face will have texture coordinates (0.0, 1.0) while the bottom will get (0.0, 0.0).

Object *sipp_bezier_patch(num_vertex, vertex, num_patch, vx_index, res, surface, shader, texture)

int  num_vertex;
Vector  vertex[];
int  num_patch;
int  vx_index[];
int  res;
void  *surface;
Shader *shader;
int  texture;

This function creates one or more bezier patches. All created patches in a call will belong to the same surface. The texture coordinates are a bit special for the bezier patches. CYLINDRICAL and SPHERICAL coordinates are not applicable, if they are specified, SIPP will use NATURAL anyway. The NATURAL mapping is a two dimensional mapping using the surface parameters u and v. Note that these parameters range from 0 to 1 within each patch!

Object *sipp_bezier_rotcurve(num_vertex, vertex, num_curve, vx_index, res, surface, shader, texture)

int  num_vertex;
Vector  vertex[];
int  num_curve;
int  vx_index[];
int  res;
void  *surface;
Shader *shader;
int  texture;

This function creates a surface by rotating one or more bezier curves about the world z-axis. The texture coordinates are a bit special for these surfaces. SPHERICAL and CYLINDRICAL mappings are not applicable, and NATURAL mapping will apply to the peace of surface created by each bezier curve separately. The NATURAL mapping uses the curve parameter u along each curve as x coordinate and goes from 0 to 1 around the perimeter of the rotational surface on the other axis

Object *sipp_bezier_file(file, res, surface, shader, texture)

FILE  *file;
int  res;
void  *surface;
Shader *shader;
int  texture;

sipp_bezier_file() reads a file containing descriptions of a set of bezier patches or bezier curves. See the user manual for a detailed description of the format of the definition file. Texture coordinates are assigned in the same way as in sipp_bezier_patch() and sipp_bezier_rotcurve().

 

SEE ALSO

sipp(3X) - simple polygon processor, a 3d-graphics library
shaders(3X) - a collection of shaders for SIPP.
geometric(3X) - Vector and matrix functions for SIPP.
sipp_pixmap(3X) - pixmap handling code for SIPP.
sipp_bitmap(3X) - bitmap handling code for SIPP.

 

AUTHORS

Jonas Yngvesson (jonas-y@isy.liu.se)
Inge Wallin    (ingwa@isy.liu.se)

 

BUGS

The format for the bezier patches and curves is prohibitively ugly.


 

Index

NAME
SYNOPSIS
DESCRIPTION
PRIMITIVES
SEE ALSO
AUTHORS
BUGS

This document was created by man2html, using the manual pages.
Time: 23:55:20 GMT, June 23, 2025